#include"apue.h"
static int msgid_ctos;
static int msgid_stoc;
Msg_ctos msg_ctos1;
Msg_ctos msg_ctos2;
Msg_stoc msg_stoc;

void unlock_cli(void)
{
	char cli_path[255]={};
	sprintf(cli_path,"%s%u",ACCOUNT_PATH,msg_ctos1.m_cli.cliid);

	int fd=open(cli_path,O_RDWR,0644);
	if(-1==fd)
	{
		perror("open");
		return;
	}
	if(0>=read(fd,&msg_ctos2.m_cli,sizeof(msg_ctos2.m_cli)))
	{
		perror("read");
		return;
	}
	if(0==strcmp(msg_ctos1.m_cli.id,msg_ctos2.m_cli.id))
	{
		msg_ctos2.m_cli.lock=0;
		lseek(fd,SEEK_SET,0);
		if(0>=write(fd,&msg_ctos2.m_cli,sizeof(msg_ctos2.m_cli)))
		{
			perror("write");
			return;
		}
		else
		{
			strcpy(msg_stoc.m_str,"解锁成功！");
		}
	}
	else
	{
		strcpy(msg_stoc.m_str,"身份证号错误！");
	}
	close(fd);

}
int main()
{
	msgid_ctos=get_ctos_msg();
	msgid_stoc=get_stoc_msg();

	while(1)
	{
		if(-1==msgrcv(msgid_ctos,&msg_ctos1,sizeof(msg_ctos1),MUNLOCK,0))
		{
			perror("msgrcv");
		}
		unlock_cli();
		msg_stoc.m_type=msg_ctos1.m_pid;
		if(-1==msgsnd(msgid_stoc,&msg_stoc,sizeof(msg_stoc.m_str),0))
		{
			perror("msgsnd");
		}
	}
}
